package cn.wolfcode.trip.base.domain;

import cn.wolfcode.trip.base.util.JSONUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Getter
@Setter
public class Travel extends BaseDomain {

    public static final int STATE_NORMAL = 0; // 草稿
    public static final int STATE_WAITING = 1; // 待审核
    public static final int STATE_RELEASE = 2; // 发布
    public static final int STATE_FORBID = 3; // 内容不符合,禁用状态

    private String title;  // 游记标题

    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date travelTime; // 旅游时间

    private String perExpends; // 平均花费

    private Integer days; // 持续时间

    private Integer person; // 和谁一起

    private User author; // 游记作者

    private Integer great;  // 游记的点赞数量

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date createTime; // 创建时间

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date releaseTime; // 发布时间

    private Boolean isPublic; // 是否公开

    private Region place; // 旅游地区

    private String coverUrl; // 背景图片

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date lastUpdateTime; // 最后更新时间

    private Integer state = STATE_NORMAL; // 状态,默认草稿状态

    private TravelContent content; // 游记内容


    public String getJsonString(){
        Map<String,Object> map= new HashMap<>();
        map.put("id",getId());
        map.put("title",title);
        map.put("coverUrl",coverUrl);
        return JSONUtil.toJSONString(map);
    }

    public String getStateDisplay(){
        if(state == STATE_NORMAL){
            return "草稿";
        }else if(state == STATE_WAITING){
            return "待审核";
        }else if(state == STATE_RELEASE){
            return "已发布";
        }else if(state == STATE_FORBID){
            return "禁止发布";
        }
        return "";
    }
}